<?php
abstract class Paginacao
{

	public static function Monta($limite, $sql)
	{

		$con = new ManipulaSql();
		$con->Seleciona($sql);

		//Verifico se retornou algum resultado
		if($con->content !== false)
		{
			//Conta total de registros encontrados
			$total = count($con->content);

			//Pega o número de página totais
			$paginasTotais = ceil($total / $limite);

			//Calcula o offset, para montar o LIMIT do mysql
			if(isset($_GET['pg']))
			{
				$offset = ($_GET['pg'] - 1) * $limite;
			}
			else
			{
				$offset = 0;
			}

			//Monta Mysql Limit
			//tradução: LIMITE exiba apartir do OFFSET, LIMITE resultados
			//se o offset fosse 10 e o limite 5 seria
			//LIMTE a exibição, Começando do 10, Exibindo apenas 5 (ou seja do 10 ao 15)
			$mysqllimit = " LIMIT {$offset},{$limite}";

			//Armazeno todas informações na array paginação, o nome
			//das variáveis dizem por sí só o que cada uma representa hehehe
			$paginacao = array();
			array_push($paginacao,$mysqllimit);
			array_push($paginacao,self::LinkPrimeira()); //índice 1 da array de retorno
			array_push($paginacao,self::LinkAnterior()); //índice 2 e assim sucessivamente da array de retorno
			array_push($paginacao,self::LinksTodasPaginas($paginasTotais));
			array_push($paginacao,self::LinkProxima($paginasTotais));
			array_push($paginacao,self::LinkUltima($paginasTotais));
			array_push($paginacao,$paginasTotais);
			array_push($paginacao,$total);

			return $paginacao;
		}
		else
		{
			return false;
		}

	}

	public static function  LinkPrimeira()
	{
		if(isset($_GET['pg']) && $_GET['pg'] > 1)
		{
			$content = '<a href="' .$_SERVER['PHP_SELF']. '?pag=' .$_GET['pag']. '&' .$_SERVER['QUERY_STRING']. '&pg=1"><<</a> |';
			return $content;
		}
	}

	public static function  LinkAnterior()
	{
		if(isset($_GET['pg']) && $_GET['pg'] > 1)
		{
			$content = '<a  href="' .$_SERVER['PHP_SELF']. '?pag=' .$_GET['pag']. '&' .$_SERVER['QUERY_STRING']. '&pg=' .($_GET['pg']-1). '">Anterior</a> | ';
			return $content;
		}
	}

	public static function  LinksTodasPaginas($totalPaginas)
	{
		$content = '';
		for ($i=1; $i<=$totalPaginas;$i++)
		{

			if(!isset($_GET['pg']))
			{
				$_GET['pg'] = 1;
			}

			if(isset($_GET['pg']) && $i != $_GET['pg'])
			{
				$content .= '<a href="' .$_SERVER['PHP_SELF']. '?pag=' .$_GET['pag']. '&' .$_SERVER['QUERY_STRING']. '&pg=' .$i. '"> ' .$i. ' </a>';
			}
			else
			{
				$content .= ' ' .$i. ' ';
			}
		}
		return $content;
	}

	public static function  LinkProxima($totalPaginas)
	{
		if(!isset($_GET['pg']))
		{
			$content = ' | <a  href="' .$_SERVER['PHP_SELF']. '?pag=' .$_GET['pag']. '&' .$_SERVER['QUERY_STRING']. '&pg=2">Próxima</a>';
			return $content;
		}
		elseif($_GET['pg'] < $totalPaginas)
		{
			$content = ' | <a href="' .$_SERVER['PHP_SELF']. '?pag=' .$_GET['pag']. '&' .$_SERVER['QUERY_STRING']. '&pg=' .($_GET['pg']+1). '">Próxima</a>';
			return $content;
		}
	}

	public static function  LinkUltima($totalPaginas)
	{
		if(isset($_GET['pg']) && $_GET['pg'] < $totalPaginas)
		{
			$content = ' | <a  href="' .$_SERVER['PHP_SELF']. '?pag=' .$_GET['pag']. '&' .$_SERVER['QUERY_STRING']. '&pg=' .$totalPaginas. '">>></a>';
			return $content;
		}
	}

}
?>